The new rule for focus events from the windowing
system is: We only want them for toplevels. If you
put focus on popups, we don't want to know about
it, and you still need to deliver key events to
the toplevel.
}
}
+static gboolean
+is_focus_event (GdkEvent *event)
+{
+ switch ((guint) event->any.type)
+ {
+ case GDK_FOCUS_CHANGE:
+ return TRUE;
+ break;
+ default:
+ return FALSE;
+ }
+}
+
+
static inline void
set_widget_active_state (GtkWidget *target,
const gboolean release)
target_widget = handle_key_event (event);
}
+ else if (is_focus_event (event))
+ {
+ if (!GTK_IS_WINDOW (target_widget))
+ {
+ g_message ("Ignoring an unexpected focus event from GDK on a non-toplevel surface.");
+ goto cleanup;
+ }
+ }
if (!target_widget)
goto cleanup;